void doJob(const boost::system::error_code& ec, const char* msg) // 1.
{
    if(!ec) // 2.
    {
        std::cout << "Message: " << msg << std::endl;
        return;
    }

    if(ec == boost::asio::error::operation_aborted) // 3.
        std::cout << "Never mind" << std::endl;
    else
        std::cout << ec.message() << std::endl;
}



boost::asio::io_service ios;

boost::asio::deadline_timer dt1 = boost::asio::deadline_timer(ios); // 1.
dt1.expires_from_now(boost::posix_time::seconds(1)); // 2.
dt1.async_wait(boost::bind(&doJob, _1, "Just say hello")); // 3.

ios.run();
